import gradio as gr
from utils.qwen import call_with_local_file
from utils.read_config import get_config_from_api_para

outputs = {
    "赛博朋克": "2024年的生活，充满了科技与现实的交织。星巴克的纸杯，黄碗米线的餐品，火车站的电子屏幕，桌上的纸牌，以及和朋友们一起品尝的火锅，都是这个世界的真实写照。在这个赛博朋克的世界里，让我们一起探索生活的无限可能。",
    "搞笑": "哈哈哈，今天真是充实的一天啊！早上先去星巴克享受了一杯美味的咖啡，还看到了一个超有趣的标签！下午吃了一碗黄碗米线，辣得我直冒汗！然后去了火车站，等待着我的旅程的开始。晚上和朋友们一起吃了一顿火锅，各种美食摆满了桌子，真是太满足了！今天的我真是中二到了极点，不过这就是我，不一样的烟火！",
    "发疯文学": "哈哈哈，看看这些照片，有星巴克、黄碗米线、火车、纸牌游戏、还有美味的火锅！我感觉自己就像是一个穿越了时空的人，经历了这么多有趣的事情！不过，最让我兴奋的还是和朋友们一起吃火锅的那个瞬间，那种热闹的氛围和美味的味道，让我感觉自己真的好幸福啊！#火锅#纸牌游戏#星巴克#黄碗米线#火车#美食#朋友圈#发疯文学",
    "文艺青年": "文艺青年测试输出"
}
# # 定义一个处理模型预测的函数
# def predict_image(img1, img2, img3, img4, img5, sty):
#     # 对图片进行预处理
#     return outputs[sty]

# # 创建 Gradio 接口
# iface = gr.Interface(predict_image, 
#                      inputs=[gr.Row([gr.Image(label="your image", shape=(224, 224), width=224),
#                              gr.Image(label="your image", shape=(224, 224), width=224),]),
#                              gr.Image(label="your image", shape=(224, 224)),
#                              gr.Image(label="your image", shape=(224, 224)),
#                              gr.Image(label="your image", shape=(224, 224)),
#                              gr.Text(label="Style")], 
#                      outputs=[gr.Text(label="识图结果")], title="Image Recognition", description="上传图片进行识别")

# # 启动应用
# iface.launch()

def model_chat(text, *images):
    # img 1-5 视觉大模型识图
    context = call_with_local_file(images)
    # context = []
    # get meta infomation
    metas = []
    # Concat Info and context
    prompt_inputs = ""
    # generate text -> outputs[sty]
    output = "\n".join(context)

    # return output
    return output


default_system = 'You are a helpful assistant.'
with gr.Blocks() as demo:
    gr.Markdown("""<center><font size=8>AutoMoment</center>
                <center><font size=6>每张照片，都有故事</center>""")

    with gr.Row():
        image_path_list = []
        image_config_num = get_config_from_api_para('max_img_num')
        for i in range(int(image_config_num)):
            with gr.Column(scale=1):
                image = gr.Image(label="your image", type="filepath", shape=(224, 224), width=224)
                image_path_list.append(image)

        system_state = gr.Textbox(value=default_system, visible=False)
    # chatbot = gr.Chatbot(label='codeqwen1.5-7b-chat')
    textbox = gr.Textbox(lines=2, label='文案风格')
    outbox = gr.Textbox(lines=2, label='根据图片生成的文案')
    with gr.Row():
        clear_history = gr.Button("🧹 Clear History")
        sumbit = gr.Button("🚀 Send")

    sumbit.click(model_chat,
                 inputs=[textbox] + image_path_list,
                 outputs=[outbox])

demo.queue(api_open=False)
demo.launch(max_threads=30)
